llvmPackages_14: Fix build on aarch64-linux#201485
Conversation
|
@ofborg eval |
|
Hmm I'm still getting for |
|
@risicle you're right, I have added the same workaround for compiler-rt and clang. |
|
When building According to llvm/llvm-project#56828 this happens with GCC 10, but works OK with GCC 11. |
|
Linking error again for |
There was a problem hiding this comment.
We should consider if adding an argument above like { withLibgcc ? stdenv.isLinux && stdenv.isAarch64 && stdenv.cc.isGNU, ... }: is better than putting these conditions inline in the body of derivations. This could make overriding LLVM easier and I think its self-documenting to have code in the form of effect ? cause rather than if ${cause} then ${action} else null.
There was a problem hiding this comment.
Since this is just an ugly workaround, I would prefer to keep this as ugly as possible. 😬
Fixed. I tried to use nixpkgs-review, but this |
primeos
left a comment
There was a problem hiding this comment.
Just as a TODO: The commit history needs to be cleaned up (one commit per logical change - currently there are basically a few fixup commits - I'd suggest to either put everything into one commit or one to fix the build and one for the -lgcc changes (the latter would probably be better)).
Ideally this should also target llvmPackages_git as well (normally that would be required but llvmPackages_git is in bad shape since many PRs forget to target it and llvmPackages_15 already has a PR that is stuck in limbo...).
The libcxx library needs a C++20 capable compiler toolchain since version 14, but aarch64-linux uses GCC 9 by default. However, building libcxxabi fails when using GCC 10, see [llvm/llvm-project#56828]. So let's use GCC 11 instead. [llvm/llvm-project#56828]: llvm/llvm-project#56828
…r-rt and clang This is required to workaround NixOS#201254.
b93b4f6 to
176a7a3
Compare
|
@primeos I have rebased onto master and refined the commit history. |
|
This pull request has been mentioned on NixOS Discourse. There might be relevant details there: |
|
This can't go directly to master. OfBorg doesn't check this for aarch64-linux, but it is a large rebuild: |
|
Bisected a broken In https://hydra.nixos.org/build/201827173 it fails >80 tests. |
|
Go ahead and revert my merge if it doesn't make things worse. |
| } // lib.optionalAttrs (stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux && buildPackages.stdenv.cc.isGNU) { | ||
| stdenv = gcc11Stdenv; |
It fails all the gold tests. Which is caused by: Would it be feasible to disable the gold linker plugin on this platform? |
|
I don't really understand this, so I just reverted the whole PR for now. Otherwise |
This change switches to using GCC 11 by default on aarch64-linux, as well as passing `-lgcc` to the linker, per NixOS#201485. See NixOS#201254 and NixOS#208412 for wider context on the issue.
This change switches to using GCC 11 by default on aarch64-linux, as well as passing `-lgcc` to the linker, per NixOS#201485. See NixOS#201254 and NixOS#208412 for wider context on the issue. (cherry picked from commit 8442601)
Description of changes
This PR fixes building the LLVM packages on aarch64-linux.
The libcxx library needs a C++20 capable compiler toolchain since version 14.
Also, work around the linking problems described in #201254
ZHF: #199919
Things done
sandbox = trueset innix.conf? (See Nix manual)nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/)nixos/doc/manual/md-to-db.shto update generated release notes